package com.syh.core.ddd.infrastructure.repository;

import cn.redscarf.commons.wrapper.Wrapper;
import com.syh.core.BaseCore;
import com.syh.core.ddd.domain.Aggregate;

import java.io.Serializable;
import java.util.List;

@Deprecated
public interface AggregateRepository<Entity extends Aggregate<ID>, ID extends Serializable> extends ReadRepo<Entity, ID>, CudRepository<Entity, ID>, BaseCore {
  /**
   * 根据主键获取数据
   *
   * @param key
   * @param <T>
   * @return
   */
  <T> T getKeyView(Serializable key);

  /**
   * 根据条件查询
   *
   * @param wrapper
   * @param <T>
   * @return
   */
  <T> T getOneView(Wrapper wrapper);

  /**
   * 根据条件查询
   *
   * @param wrapper
   * @param <T>
   * @return
   */
  <T> List<T> getListView(Wrapper wrapper);

  /**
   * 根据条件查询
   *
   * @param wrapper
   * @param startRow
   * @param count
   * @param <T>
   * @return
   */
  <T> List<T> findListPageView(Wrapper wrapper, Integer startRow, Integer count);

  /**
   * 根据条件查询获取数据数量
   *
   * @param wrapper
   * @return
   */
  int getCountView(Wrapper wrapper);
}
